package com.wooboo.server.ext.action.traffic;


import java.util.Date;
import java.util.SortedMap;
import java.util.TreeMap;

import com.wooboo.server.ext.ActionBase;
import com.wooboo.server.ext.ApiError;
import com.wooboo.server.ext.Result;
import com.wooboo.server.ext.data.SysLogger;
import com.wooboo.server.ext.data.Traffic;
import com.wooboo.server.ext.data.UserCompany;
import com.wooboo.server.ext.data.UserFinance;
import com.wooboo.server.ext.service.DbService;
import com.wooboo.server.ext.util.DateUtil;
import com.wooboo.server.ext.util.HttpClientUtils;
import com.wooboo.server.ext.util.NumberUtil;
import com.wooboo.server.ext.util.Parameters;
import com.wooboo.server.ext.util.StringUtil;

import net.sf.json.JSONObject;

/**
 * @author www.wooboo.com.cn
 * 流量汇企业信息注册申请
 */
public class Registerapply extends ActionBase{
	public Integer advertiserId;//广告主
	
	public Registerapply(){
		 needCheckAuth =false;
	}
	
	@Override
	public void initParameters(Parameters params) throws ApiError {
		advertiserId = NumberUtil.getInteger(params.getFieldValue("advertiserId"));
		if(StringUtil.isEmpty(advertiserId)){
		    throw ApiError.Type.INVALID_PARAM.toException();
		}
		
	}
	
	@Override
	public Result invokeService() throws ApiError {
		Result result = new Result();
		DbService dbService = new DbService();
		UserCompany userCompany = dbService.findCompanyById(advertiserId);
		if(null==userCompany){
			throw ApiError.Type.INVALID_PARAM.toException("账户信息不存在。");
		}
		
		
		
		String dateStr = DateUtil.getFormatDate(new Date(), "yyyyMMddHHmmss");
		SortedMap<String, String> params =  new TreeMap<String, String>();
		params.put("portalType", Traffic.PORTAL_TYPE);//门户类型 
		params.put("portalID", Traffic.PORTAL_ID);
		params.put("transactionID",dateStr+StringUtil.createId(8));//交易唯一编码：yyyMMddHHmmss+8位唯一序号
		params.put("method", Traffic.Method.companyRegisterApply.toString());//方法
		params.put("company_name", StringUtil.dealNull(userCompany.getCompany_name()));//公司
		params.put("province_name", StringUtil.dealNull(userCompany.getProvince_name()));//省份
		params.put("company_addr", StringUtil.dealNull(userCompany.getCompany_addr()));//地址
		params.put("company_nature", "");//企业性质 0 私营 1 国有 2 联营 3 外资 4 其它
		
		params.put("company_industry", "");//所属行业 0 农业 1 工业 2 服务业 3 交通运输 4 其它
		params.put("company_type", "");//企业类型 0 工商认证企业 1 普通商户 2 地市移动公司 3 政府部门
		params.put("registration_type", "");//企业证件号类型: BL 营业执照注册号 UC 统一社会信用代码
		params.put("registration_no", "");//营业执照注册号或统一社会信用代码
		params.put("foundation_date", "");//成立日期，YYYY-MM-DD
		params.put("business_term", "");//营业期限
		params.put("foundation_date", "");//营业期限
		params.put("registered_capital", "");//注册资本
		params.put("legal_person", "");//法人
		params.put("legal_person_id_no", "");//法人证件
		params.put("legal_person_mobile", "");//法人手机号
		params.put("contacts", "");//联系人姓名
		params.put("contact_mobile", "");//联系人手机
		params.put("contact_email", "");//联系人邮箱
		params.put("create_time", "");//注册时间
		params.put("sign", Traffic.sign(params));
		
		//System.out.println(params.get("signs"));
		
		JSONObject response= HttpClientUtils.getFromUrl4Json(Traffic.TRAFFIC_CALL_URI, params);
		
		SysLogger logger = new SysLogger();
		logger.business_code="traffic";
		logger.business_id=userCompany.id;
		logger.create_user=user.user_id;
		logger.operate_name="流量汇注册";
		logger.create_time=new Date();
		logger.user_name=user.user_name;
		
		StringBuffer sbuf = new StringBuffer();
		if(null==response){
			sbuf.append("调用流量汇注册接口失败！返回response为null");
			logger.operate_desc=sbuf.toString();
			//dbService.saveLogger(logger);
			throw ApiError.Type.INVALID_PARAM.toException("调用流量汇注册接口失败！");
		}
		
		String status = response.optString("status");
		String code=response.optString("code");
		sbuf.append("[status="+status+"]");
		if("ok".equalsIgnoreCase(status) && "0".equals(code)){
			//注册成功
			String company_code = response.optJSONObject("result").getString("company_code");
			sbuf.append("流量汇用户注册成功，【company_code="+company_code+"】");
			//userfinance.setTraffic_company_code(company_code);
			//dbService.update4Register(userfinance);
			//dbService.saveLogger(logger);
		}else{
			sbuf.append("流量汇用户注册失败，【status="+status+",code="+code+"】");
			//dbService.saveLogger(logger);
		}
	    return result;
	}
	
}
